package com.mmy.dao.line;

import java.util.List;
import java.util.Map;
import javax.transaction.Transactional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import com.mmy.domain.line.TLineBase;

public interface TLineBaseRepository extends JpaRepository<TLineBase, Integer> {
	
	
	/**
	 * 函数功能说明：后台线路列表 分页参数
	 *
	 * @param 参数说明
	 * @return 返回值说明 int 结果数量
 	 * @throws 异常处理说明
	 * @author 创建人 liys
	 * @date 修改日期 2021.03.22
	 */
	@Query(value = "select count(*) from tLineBase where iType = :iType and iOrgID = :iOrgID "+ 
			"and (:strLineName = \"\" or cLineName like %:strLineName%)" + 
			"and (:strZoneID = \"\" or iZoneID = :strZoneID)" + 
			"and (:strCity = \"\" or left(iZoneID,4) = left(:strCity,4))" + 
			"and (:strProvince = \"\" or left(iZoneID,2) = left(:strProvince,2))", nativeQuery = true)
	int getCount(@Param("iOrgID")int iOrgID,@Param("strLineName")String strLineName,@Param("strZoneID")String strZoneID,
			@Param("strCity")String strCity,@Param("strProvince")String strProvince,@Param("iType")int iType);
	
	/**
	 * 函数功能说明：搜索本公司线路
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路名称和ID 集合
	 * @throws 异常处理说明
	 * @author 创建人 liys
	 * @date 修改日期 2021.03.22
	 */
	@Query(value = "select iLineID,cLineName from tLineBase where iType = :iType and iOrgID = :iOrgID", nativeQuery = true)
	List<Map<String,Object>> getLineName(@Param("iOrgID")int iOrgID,@Param("iType")int iType);
	
	/**
	 * 函数功能说明：获得最大线路编号
	 *
	 * @param 参数说明
	 * @return 返回值说明 Object
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	@Query(value = "select MAX(iLineID)  from tLineBase ", nativeQuery = true)
	Object getSurroudingMaxLineID();

	/**
	 * 函数功能说明：创建线路信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 liys
	 * @date 创建日期 修改时间 2021.03.22
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tLineBase(iLineID, cLineName, cItineraryPath, iZoneID, cPlaceID, cTime, iOrgID, cOwn, cTips, cStandard, iDay, cExplain, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5,iType) VALUES (:iLineID, NULL, NULL, 110000, NULL, '2020-01-01 00:00', 0, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,:iType)", nativeQuery = true)
	void save(@Param("iLineID")int iLineID,@Param("iType")int iType);

	/**
	 * 函数功能说明：根据id查询线路信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路信息对象
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 liys
	 * @date 创建日期 修改时间 2021.01.27
	 */
	@Query(value = "select * from tLineBase where iLineID =?1", nativeQuery = true)
	TLineBase findByiLineID(int iLineID);

	/**
	 * 函数功能说明：删除线路信息
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */

	@Transactional
	@Modifying
	@Query(value = "delete from tLineBase where iLineID in (:iLineIDs)", nativeQuery = true)
	void deleteChecked(List<Integer> iLineIDs);
	
	
}
